/**    
 * @{#} RoleDao.java Create on 2012-6-8 上午12:17:23    
 *    
 * Copyright (c) 2012 by 悠忧虫.    
 *    
 * @author 悠忧虫
 * @version 1.0    
 */
package tk.sunlatus.project.permission.dao;

import java.util.List;

import tk.sunlatus.project.permission.domain.Role;

/**
 * @{# RoleDao.java Create on 2012-6-8 上午12:17:23
 * 
 *     类功能说明:
 * 
 *     <p>
 *     Copyright: Copyright(c) 2012
 *     </p>
 * @Version 1.0
 * @Author 悠忧虫
 */
public interface RoleDao {

    /**
     * 方法描述：添加角色<br>
     * 角色ID由系统维护
     * 
     * @param role
     *            角色
     * @return 角色添加结果，如果添加成功返回角色信息，否则返回null
     */
    Role saveRole(Role role);

    /**
     * 方法描述：修改角色<br>
     * 角色ID由不允许修改
     * 
     * @param role
     *            角色
     * @return 角色修改结果，如果修改成功返回角色信息，否则返回null
     */
    Role updateRole(Role role);

    /**
     * 方法描述：删除角色<br>
     * 
     * @param role
     *            角色信息<br>
     *            如果角色信息为null，返回null,否则返回被删除信息
     * @return 删除记录数
     */
    int removeRoles(Role role);

    /**
     * 方法描述：删除角色<br>
     * 
     * @param roleID
     *            角色信息ID<br>
     *            如果roleID为null，返回null,否则返回被删除角色信息
     * @return 删除记录数
     */
    Role removeRoleByID(String roleID);

    /**
     * 方法描述：根据角色ID查询角色<br>
     * 
     * @param roleID
     *            角色ID<br>
     *            如果为null，则返回null
     * @return 操作结果，如果查询成功返回角色信息，否则返回null
     */
    Role queryByID(String roleID);

    /**
     * 方法描述：根据角色ID查询角色<br>
     * 
     * @param roleID
     *            角色
     * @return 操作结果，如果查询成功返回角色信息，否则返回null
     */
    List<Role> queryRoles(Role role);

    /**
     * 方法描述：向角色中添加用户
     * 
     * @param role
     * @param roleUserIDs
     */
    void addUsers2Role(Role role, String[] roleUserIDs);

}
